/*
 * Academic License - for use in teaching, academic research, and meeting
 * course requirements at degree granting institutions only.  Not for
 * government, commercial, or other organizational use.
 * File: fft.c
 *
 * MATLAB Coder version            : 3.4
 * C/C++ source code generated on  : 06-Oct-2017 12:42:28
 */

/* Include Files */
#include "rt_nonfinite.h"
#include "wiener_ADAPTIVE_NE.h"
#include "fft.h"
#include "fft1.h"
#include "bluesteinSetup.h"
#include "wiener_ADAPTIVE_NE_data.h"

/* Function Definitions */

/*
 * Arguments    : const float x[400]
 *                creal32_T y[512]
 * Return Type  : void
 */
void b_fft(const float x[400], creal32_T y[512])
{
  int iy;
  int ix;
  int ju;
  int i;
  boolean_T tst;
  float temp_re;
  float temp_im;
  int iheight;
  int istart;
  int b_j;
  float twid_re;
  float twid_im;
  static const float fv5[257] = { 0.0F, -0.0122715384F, -0.024541229F,
    -0.0368072242F, -0.0490676761F, -0.0613207407F, -0.0735645667F,
    -0.0857973173F, -0.0980171412F, -0.110222206F, -0.122410677F, -0.134580716F,
    -0.146730468F, -0.15885815F, -0.170961902F, -0.183039889F, -0.195090324F,
    -0.207111388F, -0.219101235F, -0.231058121F, -0.242980197F, -0.254865676F,
    -0.266712785F, -0.27851969F, -0.290284663F, -0.302005947F, -0.313681751F,
    -0.32531032F, -0.336889863F, -0.348418683F, -0.359895051F, -0.371317208F,
    -0.382683456F, -0.393992066F, -0.40524134F, -0.416429579F, -0.427555084F,
    -0.438616246F, -0.449611336F, -0.460538715F, -0.471396744F, -0.482183754F,
    -0.492898226F, -0.50353837F, -0.514102757F, -0.524589717F, -0.534997642F,
    -0.545325041F, -0.555570245F, -0.565731823F, -0.575808227F, -0.585797906F,
    -0.59569931F, -0.605511F, -0.615231633F, -0.624859512F, -0.634393334F,
    -0.643831551F, -0.653172851F, -0.662415802F, -0.671559F, -0.680601F,
    -0.689540565F, -0.698376298F, -0.707106769F, -0.715730786F, -0.724247098F,
    -0.732654274F, -0.740951121F, -0.749136388F, -0.757208824F, -0.765167236F,
    -0.773010433F, -0.780737221F, -0.78834641F, -0.795836926F, -0.803207517F,
    -0.81045717F, -0.817584813F, -0.824589252F, -0.831469595F, -0.838224709F,
    -0.84485358F, -0.851355195F, -0.857728601F, -0.863972843F, -0.870086968F,
    -0.876070082F, -0.881921232F, -0.887639642F, -0.893224299F, -0.898674488F,
    -0.903989315F, -0.909167945F, -0.914209723F, -0.919113874F, -0.923879504F,
    -0.928506076F, -0.932992816F, -0.937339F, -0.941544056F, -0.945607305F,
    -0.949528158F, -0.953306F, -0.956940353F, -0.960430503F, -0.963776052F,
    -0.966976464F, -0.970031261F, -0.972939968F, -0.975702107F, -0.97831738F,
    -0.980785251F, -0.983105481F, -0.985277653F, -0.987301409F, -0.989176512F,
    -0.990902662F, -0.992479563F, -0.993907F, -0.99518472F, -0.996312618F,
    -0.997290432F, -0.998118103F, -0.99879545F, -0.999322414F, -0.999698818F,
    -0.999924719F, -1.0F, -0.999924719F, -0.999698818F, -0.999322414F,
    -0.99879545F, -0.998118103F, -0.997290432F, -0.996312618F, -0.99518472F,
    -0.993907F, -0.992479563F, -0.990902662F, -0.989176512F, -0.987301409F,
    -0.985277653F, -0.983105481F, -0.980785251F, -0.97831738F, -0.975702107F,
    -0.972939968F, -0.970031261F, -0.966976464F, -0.963776052F, -0.960430503F,
    -0.956940353F, -0.953306F, -0.949528158F, -0.945607305F, -0.941544056F,
    -0.937339F, -0.932992816F, -0.928506076F, -0.923879504F, -0.919113874F,
    -0.914209723F, -0.909167945F, -0.903989315F, -0.898674488F, -0.893224299F,
    -0.887639642F, -0.881921232F, -0.876070082F, -0.870086968F, -0.863972843F,
    -0.857728601F, -0.851355195F, -0.84485358F, -0.838224709F, -0.831469595F,
    -0.824589252F, -0.817584813F, -0.81045717F, -0.803207517F, -0.795836926F,
    -0.78834641F, -0.780737221F, -0.773010433F, -0.765167236F, -0.757208824F,
    -0.749136388F, -0.740951121F, -0.732654274F, -0.724247098F, -0.715730786F,
    -0.707106769F, -0.698376298F, -0.689540565F, -0.680601F, -0.671559F,
    -0.662415802F, -0.653172851F, -0.643831551F, -0.634393334F, -0.624859512F,
    -0.615231633F, -0.605511F, -0.59569931F, -0.585797906F, -0.575808227F,
    -0.565731823F, -0.555570245F, -0.545325041F, -0.534997642F, -0.524589717F,
    -0.514102757F, -0.50353837F, -0.492898226F, -0.482183754F, -0.471396744F,
    -0.460538715F, -0.449611336F, -0.438616246F, -0.427555084F, -0.416429579F,
    -0.40524134F, -0.393992066F, -0.382683456F, -0.371317208F, -0.359895051F,
    -0.348418683F, -0.336889863F, -0.32531032F, -0.313681751F, -0.302005947F,
    -0.290284663F, -0.27851969F, -0.266712785F, -0.254865676F, -0.242980197F,
    -0.231058121F, -0.219101235F, -0.207111388F, -0.195090324F, -0.183039889F,
    -0.170961902F, -0.15885815F, -0.146730468F, -0.134580716F, -0.122410677F,
    -0.110222206F, -0.0980171412F, -0.0857973173F, -0.0735645667F,
    -0.0613207407F, -0.0490676761F, -0.0368072242F, -0.024541229F,
    -0.0122715384F, -0.0F };

  int ihi;
  for (iy = 0; iy < 512; iy++) {
    y[iy].re = 0.0F;
    y[iy].im = 0.0F;
  }

  ix = 0;
  ju = 0;
  iy = 0;
  for (i = 0; i < 399; i++) {
    y[iy].re = x[ix];
    y[iy].im = 0.0F;
    iy = 512;
    tst = true;
    while (tst) {
      iy >>= 1;
      ju ^= iy;
      tst = ((ju & iy) == 0);
    }

    iy = ju;
    ix++;
  }

  y[iy].re = x[ix];
  y[iy].im = 0.0F;
  for (i = 0; i <= 511; i += 2) {
    temp_re = y[i + 1].re;
    temp_im = y[i + 1].im;
    y[i + 1].re = y[i].re - y[i + 1].re;
    y[i + 1].im = y[i].im - y[i + 1].im;
    y[i].re += temp_re;
    y[i].im += temp_im;
  }

  iy = 2;
  ix = 4;
  ju = 128;
  iheight = 509;
  while (ju > 0) {
    for (i = 0; i < iheight; i += ix) {
      temp_re = y[i + iy].re;
      temp_im = y[i + iy].im;
      y[i + iy].re = y[i].re - temp_re;
      y[i + iy].im = y[i].im - temp_im;
      y[i].re += temp_re;
      y[i].im += temp_im;
    }

    istart = 1;
    for (b_j = ju; b_j < 256; b_j += ju) {
      twid_re = fv0[b_j];
      twid_im = fv5[b_j];
      i = istart;
      ihi = istart + iheight;
      while (i < ihi) {
        temp_re = twid_re * y[i + iy].re - twid_im * y[i + iy].im;
        temp_im = twid_re * y[i + iy].im + twid_im * y[i + iy].re;
        y[i + iy].re = y[i].re - temp_re;
        y[i + iy].im = y[i].im - temp_im;
        y[i].re += temp_re;
        y[i].im += temp_im;
        i += ix;
      }

      istart++;
    }

    ju /= 2;
    iy = ix;
    ix += ix;
    iheight -= iy;
  }
}

/*
 * Arguments    : const float x[400]
 *                creal32_T y[400]
 * Return Type  : void
 */
void fft(const float x[400], creal32_T y[400])
{
  creal32_T wwc[799];
  int xidx;
  int k;
  static const float costab[513] = { 1.0F, 0.999981165F, 0.999924719F,
    0.999830604F, 0.999698818F, 0.999529421F, 0.999322414F, 0.999077737F,
    0.99879545F, 0.998475552F, 0.998118103F, 0.997723043F, 0.997290432F,
    0.996820271F, 0.996312618F, 0.995767415F, 0.99518472F, 0.994564593F,
    0.993907F, 0.993211925F, 0.992479563F, 0.991709769F, 0.990902662F,
    0.990058184F, 0.989176512F, 0.988257587F, 0.987301409F, 0.986308098F,
    0.985277653F, 0.984210074F, 0.983105481F, 0.981963873F, 0.980785251F,
    0.979569793F, 0.97831738F, 0.977028131F, 0.975702107F, 0.974339366F,
    0.972939968F, 0.971503913F, 0.970031261F, 0.968522072F, 0.966976464F,
    0.965394437F, 0.963776052F, 0.962121427F, 0.960430503F, 0.958703458F,
    0.956940353F, 0.955141187F, 0.953306F, 0.951435F, 0.949528158F, 0.947585583F,
    0.945607305F, 0.943593442F, 0.941544056F, 0.939459205F, 0.937339F,
    0.935183525F, 0.932992816F, 0.93076694F, 0.928506076F, 0.926210225F,
    0.923879504F, 0.921514034F, 0.919113874F, 0.916679084F, 0.914209723F,
    0.91170603F, 0.909167945F, 0.906595707F, 0.903989315F, 0.901348829F,
    0.898674488F, 0.895966232F, 0.893224299F, 0.890448749F, 0.887639642F,
    0.884797096F, 0.881921232F, 0.879012227F, 0.876070082F, 0.873095F,
    0.870086968F, 0.867046237F, 0.863972843F, 0.860866904F, 0.857728601F,
    0.854558F, 0.851355195F, 0.848120332F, 0.84485358F, 0.841555F, 0.838224709F,
    0.834862828F, 0.831469595F, 0.828045F, 0.824589252F, 0.8211025F,
    0.817584813F, 0.81403631F, 0.81045717F, 0.806847572F, 0.803207517F,
    0.799537241F, 0.795836926F, 0.792106569F, 0.78834641F, 0.784556627F,
    0.780737221F, 0.77688843F, 0.773010433F, 0.769103348F, 0.765167236F,
    0.761202335F, 0.757208824F, 0.753186822F, 0.749136388F, 0.745057762F,
    0.740951121F, 0.736816525F, 0.732654274F, 0.728464365F, 0.724247098F,
    0.720002472F, 0.715730786F, 0.711432219F, 0.707106769F, 0.702754736F,
    0.698376298F, 0.693971455F, 0.689540565F, 0.685083628F, 0.680601F,
    0.676092744F, 0.671559F, 0.666999936F, 0.662415802F, 0.657806695F,
    0.653172851F, 0.64851445F, 0.643831551F, 0.639124453F, 0.634393334F,
    0.629638255F, 0.624859512F, 0.620057225F, 0.615231633F, 0.610382795F,
    0.605511F, 0.600616515F, 0.59569931F, 0.590759695F, 0.585797906F, 0.580814F,
    0.575808227F, 0.570780754F, 0.565731823F, 0.560661614F, 0.555570245F,
    0.550458F, 0.545325041F, 0.540171504F, 0.534997642F, 0.529803634F,
    0.524589717F, 0.519356F, 0.514102757F, 0.50883019F, 0.50353837F,
    0.498227656F, 0.492898226F, 0.487550169F, 0.482183754F, 0.47679925F,
    0.471396744F, 0.465976506F, 0.460538715F, 0.455083579F, 0.449611336F,
    0.444122165F, 0.438616246F, 0.433093846F, 0.427555084F, 0.422000289F,
    0.416429579F, 0.410843194F, 0.40524134F, 0.399624199F, 0.393992066F,
    0.388345033F, 0.382683456F, 0.377007425F, 0.371317208F, 0.365613F,
    0.359895051F, 0.354163527F, 0.348418683F, 0.342660725F, 0.336889863F,
    0.331106305F, 0.32531032F, 0.319502026F, 0.313681751F, 0.307849675F,
    0.302005947F, 0.296150893F, 0.290284663F, 0.284407556F, 0.27851969F,
    0.272621363F, 0.266712785F, 0.260794133F, 0.254865676F, 0.248927608F,
    0.242980197F, 0.237023607F, 0.231058121F, 0.225083917F, 0.219101235F,
    0.213110328F, 0.207111388F, 0.201104641F, 0.195090324F, 0.18906866F,
    0.183039889F, 0.177004218F, 0.170961902F, 0.164913133F, 0.15885815F,
    0.152797192F, 0.146730468F, 0.140658244F, 0.134580716F, 0.128498122F,
    0.122410677F, 0.116318636F, 0.110222206F, 0.10412164F, 0.0980171412F,
    0.0919089541F, 0.0857973173F, 0.0796824396F, 0.0735645667F, 0.0674439222F,
    0.0613207407F, 0.0551952459F, 0.0490676761F, 0.0429382585F, 0.0368072242F,
    0.030674804F, 0.024541229F, 0.0184067301F, 0.0122715384F, 0.00613588467F,
    0.0F, -0.00613588467F, -0.0122715384F, -0.0184067301F, -0.024541229F,
    -0.030674804F, -0.0368072242F, -0.0429382585F, -0.0490676761F,
    -0.0551952459F, -0.0613207407F, -0.0674439222F, -0.0735645667F,
    -0.0796824396F, -0.0857973173F, -0.0919089541F, -0.0980171412F, -0.10412164F,
    -0.110222206F, -0.116318636F, -0.122410677F, -0.128498122F, -0.134580716F,
    -0.140658244F, -0.146730468F, -0.152797192F, -0.15885815F, -0.164913133F,
    -0.170961902F, -0.177004218F, -0.183039889F, -0.18906866F, -0.195090324F,
    -0.201104641F, -0.207111388F, -0.213110328F, -0.219101235F, -0.225083917F,
    -0.231058121F, -0.237023607F, -0.242980197F, -0.248927608F, -0.254865676F,
    -0.260794133F, -0.266712785F, -0.272621363F, -0.27851969F, -0.284407556F,
    -0.290284663F, -0.296150893F, -0.302005947F, -0.307849675F, -0.313681751F,
    -0.319502026F, -0.32531032F, -0.331106305F, -0.336889863F, -0.342660725F,
    -0.348418683F, -0.354163527F, -0.359895051F, -0.365613F, -0.371317208F,
    -0.377007425F, -0.382683456F, -0.388345033F, -0.393992066F, -0.399624199F,
    -0.40524134F, -0.410843194F, -0.416429579F, -0.422000289F, -0.427555084F,
    -0.433093846F, -0.438616246F, -0.444122165F, -0.449611336F, -0.455083579F,
    -0.460538715F, -0.465976506F, -0.471396744F, -0.47679925F, -0.482183754F,
    -0.487550169F, -0.492898226F, -0.498227656F, -0.50353837F, -0.50883019F,
    -0.514102757F, -0.519356F, -0.524589717F, -0.529803634F, -0.534997642F,
    -0.540171504F, -0.545325041F, -0.550458F, -0.555570245F, -0.560661614F,
    -0.565731823F, -0.570780754F, -0.575808227F, -0.580814F, -0.585797906F,
    -0.590759695F, -0.59569931F, -0.600616515F, -0.605511F, -0.610382795F,
    -0.615231633F, -0.620057225F, -0.624859512F, -0.629638255F, -0.634393334F,
    -0.639124453F, -0.643831551F, -0.64851445F, -0.653172851F, -0.657806695F,
    -0.662415802F, -0.666999936F, -0.671559F, -0.676092744F, -0.680601F,
    -0.685083628F, -0.689540565F, -0.693971455F, -0.698376298F, -0.702754736F,
    -0.707106769F, -0.711432219F, -0.715730786F, -0.720002472F, -0.724247098F,
    -0.728464365F, -0.732654274F, -0.736816525F, -0.740951121F, -0.745057762F,
    -0.749136388F, -0.753186822F, -0.757208824F, -0.761202335F, -0.765167236F,
    -0.769103348F, -0.773010433F, -0.77688843F, -0.780737221F, -0.784556627F,
    -0.78834641F, -0.792106569F, -0.795836926F, -0.799537241F, -0.803207517F,
    -0.806847572F, -0.81045717F, -0.81403631F, -0.817584813F, -0.8211025F,
    -0.824589252F, -0.828045F, -0.831469595F, -0.834862828F, -0.838224709F,
    -0.841555F, -0.84485358F, -0.848120332F, -0.851355195F, -0.854558F,
    -0.857728601F, -0.860866904F, -0.863972843F, -0.867046237F, -0.870086968F,
    -0.873095F, -0.876070082F, -0.879012227F, -0.881921232F, -0.884797096F,
    -0.887639642F, -0.890448749F, -0.893224299F, -0.895966232F, -0.898674488F,
    -0.901348829F, -0.903989315F, -0.906595707F, -0.909167945F, -0.91170603F,
    -0.914209723F, -0.916679084F, -0.919113874F, -0.921514034F, -0.923879504F,
    -0.926210225F, -0.928506076F, -0.93076694F, -0.932992816F, -0.935183525F,
    -0.937339F, -0.939459205F, -0.941544056F, -0.943593442F, -0.945607305F,
    -0.947585583F, -0.949528158F, -0.951435F, -0.953306F, -0.955141187F,
    -0.956940353F, -0.958703458F, -0.960430503F, -0.962121427F, -0.963776052F,
    -0.965394437F, -0.966976464F, -0.968522072F, -0.970031261F, -0.971503913F,
    -0.972939968F, -0.974339366F, -0.975702107F, -0.977028131F, -0.97831738F,
    -0.979569793F, -0.980785251F, -0.981963873F, -0.983105481F, -0.984210074F,
    -0.985277653F, -0.986308098F, -0.987301409F, -0.988257587F, -0.989176512F,
    -0.990058184F, -0.990902662F, -0.991709769F, -0.992479563F, -0.993211925F,
    -0.993907F, -0.994564593F, -0.99518472F, -0.995767415F, -0.996312618F,
    -0.996820271F, -0.997290432F, -0.997723043F, -0.998118103F, -0.998475552F,
    -0.99879545F, -0.999077737F, -0.999322414F, -0.999529421F, -0.999698818F,
    -0.999830604F, -0.999924719F, -0.999981165F, -1.0F };

  static const float sintab[513] = { 0.0F, -0.00613588467F, -0.0122715384F,
    -0.0184067301F, -0.024541229F, -0.030674804F, -0.0368072242F, -0.0429382585F,
    -0.0490676761F, -0.0551952459F, -0.0613207407F, -0.0674439222F,
    -0.0735645667F, -0.0796824396F, -0.0857973173F, -0.0919089541F,
    -0.0980171412F, -0.10412164F, -0.110222206F, -0.116318636F, -0.122410677F,
    -0.128498122F, -0.134580716F, -0.140658244F, -0.146730468F, -0.152797192F,
    -0.15885815F, -0.164913133F, -0.170961902F, -0.177004218F, -0.183039889F,
    -0.18906866F, -0.195090324F, -0.201104641F, -0.207111388F, -0.213110328F,
    -0.219101235F, -0.225083917F, -0.231058121F, -0.237023607F, -0.242980197F,
    -0.248927608F, -0.254865676F, -0.260794133F, -0.266712785F, -0.272621363F,
    -0.27851969F, -0.284407556F, -0.290284663F, -0.296150893F, -0.302005947F,
    -0.307849675F, -0.313681751F, -0.319502026F, -0.32531032F, -0.331106305F,
    -0.336889863F, -0.342660725F, -0.348418683F, -0.354163527F, -0.359895051F,
    -0.365613F, -0.371317208F, -0.377007425F, -0.382683456F, -0.388345033F,
    -0.393992066F, -0.399624199F, -0.40524134F, -0.410843194F, -0.416429579F,
    -0.422000289F, -0.427555084F, -0.433093846F, -0.438616246F, -0.444122165F,
    -0.449611336F, -0.455083579F, -0.460538715F, -0.465976506F, -0.471396744F,
    -0.47679925F, -0.482183754F, -0.487550169F, -0.492898226F, -0.498227656F,
    -0.50353837F, -0.50883019F, -0.514102757F, -0.519356F, -0.524589717F,
    -0.529803634F, -0.534997642F, -0.540171504F, -0.545325041F, -0.550458F,
    -0.555570245F, -0.560661614F, -0.565731823F, -0.570780754F, -0.575808227F,
    -0.580814F, -0.585797906F, -0.590759695F, -0.59569931F, -0.600616515F,
    -0.605511F, -0.610382795F, -0.615231633F, -0.620057225F, -0.624859512F,
    -0.629638255F, -0.634393334F, -0.639124453F, -0.643831551F, -0.64851445F,
    -0.653172851F, -0.657806695F, -0.662415802F, -0.666999936F, -0.671559F,
    -0.676092744F, -0.680601F, -0.685083628F, -0.689540565F, -0.693971455F,
    -0.698376298F, -0.702754736F, -0.707106769F, -0.711432219F, -0.715730786F,
    -0.720002472F, -0.724247098F, -0.728464365F, -0.732654274F, -0.736816525F,
    -0.740951121F, -0.745057762F, -0.749136388F, -0.753186822F, -0.757208824F,
    -0.761202335F, -0.765167236F, -0.769103348F, -0.773010433F, -0.77688843F,
    -0.780737221F, -0.784556627F, -0.78834641F, -0.792106569F, -0.795836926F,
    -0.799537241F, -0.803207517F, -0.806847572F, -0.81045717F, -0.81403631F,
    -0.817584813F, -0.8211025F, -0.824589252F, -0.828045F, -0.831469595F,
    -0.834862828F, -0.838224709F, -0.841555F, -0.84485358F, -0.848120332F,
    -0.851355195F, -0.854558F, -0.857728601F, -0.860866904F, -0.863972843F,
    -0.867046237F, -0.870086968F, -0.873095F, -0.876070082F, -0.879012227F,
    -0.881921232F, -0.884797096F, -0.887639642F, -0.890448749F, -0.893224299F,
    -0.895966232F, -0.898674488F, -0.901348829F, -0.903989315F, -0.906595707F,
    -0.909167945F, -0.91170603F, -0.914209723F, -0.916679084F, -0.919113874F,
    -0.921514034F, -0.923879504F, -0.926210225F, -0.928506076F, -0.93076694F,
    -0.932992816F, -0.935183525F, -0.937339F, -0.939459205F, -0.941544056F,
    -0.943593442F, -0.945607305F, -0.947585583F, -0.949528158F, -0.951435F,
    -0.953306F, -0.955141187F, -0.956940353F, -0.958703458F, -0.960430503F,
    -0.962121427F, -0.963776052F, -0.965394437F, -0.966976464F, -0.968522072F,
    -0.970031261F, -0.971503913F, -0.972939968F, -0.974339366F, -0.975702107F,
    -0.977028131F, -0.97831738F, -0.979569793F, -0.980785251F, -0.981963873F,
    -0.983105481F, -0.984210074F, -0.985277653F, -0.986308098F, -0.987301409F,
    -0.988257587F, -0.989176512F, -0.990058184F, -0.990902662F, -0.991709769F,
    -0.992479563F, -0.993211925F, -0.993907F, -0.994564593F, -0.99518472F,
    -0.995767415F, -0.996312618F, -0.996820271F, -0.997290432F, -0.997723043F,
    -0.998118103F, -0.998475552F, -0.99879545F, -0.999077737F, -0.999322414F,
    -0.999529421F, -0.999698818F, -0.999830604F, -0.999924719F, -0.999981165F,
    -1.0F, -0.999981165F, -0.999924719F, -0.999830604F, -0.999698818F,
    -0.999529421F, -0.999322414F, -0.999077737F, -0.99879545F, -0.998475552F,
    -0.998118103F, -0.997723043F, -0.997290432F, -0.996820271F, -0.996312618F,
    -0.995767415F, -0.99518472F, -0.994564593F, -0.993907F, -0.993211925F,
    -0.992479563F, -0.991709769F, -0.990902662F, -0.990058184F, -0.989176512F,
    -0.988257587F, -0.987301409F, -0.986308098F, -0.985277653F, -0.984210074F,
    -0.983105481F, -0.981963873F, -0.980785251F, -0.979569793F, -0.97831738F,
    -0.977028131F, -0.975702107F, -0.974339366F, -0.972939968F, -0.971503913F,
    -0.970031261F, -0.968522072F, -0.966976464F, -0.965394437F, -0.963776052F,
    -0.962121427F, -0.960430503F, -0.958703458F, -0.956940353F, -0.955141187F,
    -0.953306F, -0.951435F, -0.949528158F, -0.947585583F, -0.945607305F,
    -0.943593442F, -0.941544056F, -0.939459205F, -0.937339F, -0.935183525F,
    -0.932992816F, -0.93076694F, -0.928506076F, -0.926210225F, -0.923879504F,
    -0.921514034F, -0.919113874F, -0.916679084F, -0.914209723F, -0.91170603F,
    -0.909167945F, -0.906595707F, -0.903989315F, -0.901348829F, -0.898674488F,
    -0.895966232F, -0.893224299F, -0.890448749F, -0.887639642F, -0.884797096F,
    -0.881921232F, -0.879012227F, -0.876070082F, -0.873095F, -0.870086968F,
    -0.867046237F, -0.863972843F, -0.860866904F, -0.857728601F, -0.854558F,
    -0.851355195F, -0.848120332F, -0.84485358F, -0.841555F, -0.838224709F,
    -0.834862828F, -0.831469595F, -0.828045F, -0.824589252F, -0.8211025F,
    -0.817584813F, -0.81403631F, -0.81045717F, -0.806847572F, -0.803207517F,
    -0.799537241F, -0.795836926F, -0.792106569F, -0.78834641F, -0.784556627F,
    -0.780737221F, -0.77688843F, -0.773010433F, -0.769103348F, -0.765167236F,
    -0.761202335F, -0.757208824F, -0.753186822F, -0.749136388F, -0.745057762F,
    -0.740951121F, -0.736816525F, -0.732654274F, -0.728464365F, -0.724247098F,
    -0.720002472F, -0.715730786F, -0.711432219F, -0.707106769F, -0.702754736F,
    -0.698376298F, -0.693971455F, -0.689540565F, -0.685083628F, -0.680601F,
    -0.676092744F, -0.671559F, -0.666999936F, -0.662415802F, -0.657806695F,
    -0.653172851F, -0.64851445F, -0.643831551F, -0.639124453F, -0.634393334F,
    -0.629638255F, -0.624859512F, -0.620057225F, -0.615231633F, -0.610382795F,
    -0.605511F, -0.600616515F, -0.59569931F, -0.590759695F, -0.585797906F,
    -0.580814F, -0.575808227F, -0.570780754F, -0.565731823F, -0.560661614F,
    -0.555570245F, -0.550458F, -0.545325041F, -0.540171504F, -0.534997642F,
    -0.529803634F, -0.524589717F, -0.519356F, -0.514102757F, -0.50883019F,
    -0.50353837F, -0.498227656F, -0.492898226F, -0.487550169F, -0.482183754F,
    -0.47679925F, -0.471396744F, -0.465976506F, -0.460538715F, -0.455083579F,
    -0.449611336F, -0.444122165F, -0.438616246F, -0.433093846F, -0.427555084F,
    -0.422000289F, -0.416429579F, -0.410843194F, -0.40524134F, -0.399624199F,
    -0.393992066F, -0.388345033F, -0.382683456F, -0.377007425F, -0.371317208F,
    -0.365613F, -0.359895051F, -0.354163527F, -0.348418683F, -0.342660725F,
    -0.336889863F, -0.331106305F, -0.32531032F, -0.319502026F, -0.313681751F,
    -0.307849675F, -0.302005947F, -0.296150893F, -0.290284663F, -0.284407556F,
    -0.27851969F, -0.272621363F, -0.266712785F, -0.260794133F, -0.254865676F,
    -0.248927608F, -0.242980197F, -0.237023607F, -0.231058121F, -0.225083917F,
    -0.219101235F, -0.213110328F, -0.207111388F, -0.201104641F, -0.195090324F,
    -0.18906866F, -0.183039889F, -0.177004218F, -0.170961902F, -0.164913133F,
    -0.15885815F, -0.152797192F, -0.146730468F, -0.140658244F, -0.134580716F,
    -0.128498122F, -0.122410677F, -0.116318636F, -0.110222206F, -0.10412164F,
    -0.0980171412F, -0.0919089541F, -0.0857973173F, -0.0796824396F,
    -0.0735645667F, -0.0674439222F, -0.0613207407F, -0.0551952459F,
    -0.0490676761F, -0.0429382585F, -0.0368072242F, -0.030674804F, -0.024541229F,
    -0.0184067301F, -0.0122715384F, -0.00613588467F, -0.0F };

  creal32_T fv[1024];
  creal32_T fcv1[1024];
  creal32_T b_fv[1024];
  static const float sintabinv[513] = { 0.0F, 0.00613588467F, 0.0122715384F,
    0.0184067301F, 0.024541229F, 0.030674804F, 0.0368072242F, 0.0429382585F,
    0.0490676761F, 0.0551952459F, 0.0613207407F, 0.0674439222F, 0.0735645667F,
    0.0796824396F, 0.0857973173F, 0.0919089541F, 0.0980171412F, 0.10412164F,
    0.110222206F, 0.116318636F, 0.122410677F, 0.128498122F, 0.134580716F,
    0.140658244F, 0.146730468F, 0.152797192F, 0.15885815F, 0.164913133F,
    0.170961902F, 0.177004218F, 0.183039889F, 0.18906866F, 0.195090324F,
    0.201104641F, 0.207111388F, 0.213110328F, 0.219101235F, 0.225083917F,
    0.231058121F, 0.237023607F, 0.242980197F, 0.248927608F, 0.254865676F,
    0.260794133F, 0.266712785F, 0.272621363F, 0.27851969F, 0.284407556F,
    0.290284663F, 0.296150893F, 0.302005947F, 0.307849675F, 0.313681751F,
    0.319502026F, 0.32531032F, 0.331106305F, 0.336889863F, 0.342660725F,
    0.348418683F, 0.354163527F, 0.359895051F, 0.365613F, 0.371317208F,
    0.377007425F, 0.382683456F, 0.388345033F, 0.393992066F, 0.399624199F,
    0.40524134F, 0.410843194F, 0.416429579F, 0.422000289F, 0.427555084F,
    0.433093846F, 0.438616246F, 0.444122165F, 0.449611336F, 0.455083579F,
    0.460538715F, 0.465976506F, 0.471396744F, 0.47679925F, 0.482183754F,
    0.487550169F, 0.492898226F, 0.498227656F, 0.50353837F, 0.50883019F,
    0.514102757F, 0.519356F, 0.524589717F, 0.529803634F, 0.534997642F,
    0.540171504F, 0.545325041F, 0.550458F, 0.555570245F, 0.560661614F,
    0.565731823F, 0.570780754F, 0.575808227F, 0.580814F, 0.585797906F,
    0.590759695F, 0.59569931F, 0.600616515F, 0.605511F, 0.610382795F,
    0.615231633F, 0.620057225F, 0.624859512F, 0.629638255F, 0.634393334F,
    0.639124453F, 0.643831551F, 0.64851445F, 0.653172851F, 0.657806695F,
    0.662415802F, 0.666999936F, 0.671559F, 0.676092744F, 0.680601F, 0.685083628F,
    0.689540565F, 0.693971455F, 0.698376298F, 0.702754736F, 0.707106769F,
    0.711432219F, 0.715730786F, 0.720002472F, 0.724247098F, 0.728464365F,
    0.732654274F, 0.736816525F, 0.740951121F, 0.745057762F, 0.749136388F,
    0.753186822F, 0.757208824F, 0.761202335F, 0.765167236F, 0.769103348F,
    0.773010433F, 0.77688843F, 0.780737221F, 0.784556627F, 0.78834641F,
    0.792106569F, 0.795836926F, 0.799537241F, 0.803207517F, 0.806847572F,
    0.81045717F, 0.81403631F, 0.817584813F, 0.8211025F, 0.824589252F, 0.828045F,
    0.831469595F, 0.834862828F, 0.838224709F, 0.841555F, 0.84485358F,
    0.848120332F, 0.851355195F, 0.854558F, 0.857728601F, 0.860866904F,
    0.863972843F, 0.867046237F, 0.870086968F, 0.873095F, 0.876070082F,
    0.879012227F, 0.881921232F, 0.884797096F, 0.887639642F, 0.890448749F,
    0.893224299F, 0.895966232F, 0.898674488F, 0.901348829F, 0.903989315F,
    0.906595707F, 0.909167945F, 0.91170603F, 0.914209723F, 0.916679084F,
    0.919113874F, 0.921514034F, 0.923879504F, 0.926210225F, 0.928506076F,
    0.93076694F, 0.932992816F, 0.935183525F, 0.937339F, 0.939459205F,
    0.941544056F, 0.943593442F, 0.945607305F, 0.947585583F, 0.949528158F,
    0.951435F, 0.953306F, 0.955141187F, 0.956940353F, 0.958703458F, 0.960430503F,
    0.962121427F, 0.963776052F, 0.965394437F, 0.966976464F, 0.968522072F,
    0.970031261F, 0.971503913F, 0.972939968F, 0.974339366F, 0.975702107F,
    0.977028131F, 0.97831738F, 0.979569793F, 0.980785251F, 0.981963873F,
    0.983105481F, 0.984210074F, 0.985277653F, 0.986308098F, 0.987301409F,
    0.988257587F, 0.989176512F, 0.990058184F, 0.990902662F, 0.991709769F,
    0.992479563F, 0.993211925F, 0.993907F, 0.994564593F, 0.99518472F,
    0.995767415F, 0.996312618F, 0.996820271F, 0.997290432F, 0.997723043F,
    0.998118103F, 0.998475552F, 0.99879545F, 0.999077737F, 0.999322414F,
    0.999529421F, 0.999698818F, 0.999830604F, 0.999924719F, 0.999981165F, 1.0F,
    0.999981165F, 0.999924719F, 0.999830604F, 0.999698818F, 0.999529421F,
    0.999322414F, 0.999077737F, 0.99879545F, 0.998475552F, 0.998118103F,
    0.997723043F, 0.997290432F, 0.996820271F, 0.996312618F, 0.995767415F,
    0.99518472F, 0.994564593F, 0.993907F, 0.993211925F, 0.992479563F,
    0.991709769F, 0.990902662F, 0.990058184F, 0.989176512F, 0.988257587F,
    0.987301409F, 0.986308098F, 0.985277653F, 0.984210074F, 0.983105481F,
    0.981963873F, 0.980785251F, 0.979569793F, 0.97831738F, 0.977028131F,
    0.975702107F, 0.974339366F, 0.972939968F, 0.971503913F, 0.970031261F,
    0.968522072F, 0.966976464F, 0.965394437F, 0.963776052F, 0.962121427F,
    0.960430503F, 0.958703458F, 0.956940353F, 0.955141187F, 0.953306F, 0.951435F,
    0.949528158F, 0.947585583F, 0.945607305F, 0.943593442F, 0.941544056F,
    0.939459205F, 0.937339F, 0.935183525F, 0.932992816F, 0.93076694F,
    0.928506076F, 0.926210225F, 0.923879504F, 0.921514034F, 0.919113874F,
    0.916679084F, 0.914209723F, 0.91170603F, 0.909167945F, 0.906595707F,
    0.903989315F, 0.901348829F, 0.898674488F, 0.895966232F, 0.893224299F,
    0.890448749F, 0.887639642F, 0.884797096F, 0.881921232F, 0.879012227F,
    0.876070082F, 0.873095F, 0.870086968F, 0.867046237F, 0.863972843F,
    0.860866904F, 0.857728601F, 0.854558F, 0.851355195F, 0.848120332F,
    0.84485358F, 0.841555F, 0.838224709F, 0.834862828F, 0.831469595F, 0.828045F,
    0.824589252F, 0.8211025F, 0.817584813F, 0.81403631F, 0.81045717F,
    0.806847572F, 0.803207517F, 0.799537241F, 0.795836926F, 0.792106569F,
    0.78834641F, 0.784556627F, 0.780737221F, 0.77688843F, 0.773010433F,
    0.769103348F, 0.765167236F, 0.761202335F, 0.757208824F, 0.753186822F,
    0.749136388F, 0.745057762F, 0.740951121F, 0.736816525F, 0.732654274F,
    0.728464365F, 0.724247098F, 0.720002472F, 0.715730786F, 0.711432219F,
    0.707106769F, 0.702754736F, 0.698376298F, 0.693971455F, 0.689540565F,
    0.685083628F, 0.680601F, 0.676092744F, 0.671559F, 0.666999936F, 0.662415802F,
    0.657806695F, 0.653172851F, 0.64851445F, 0.643831551F, 0.639124453F,
    0.634393334F, 0.629638255F, 0.624859512F, 0.620057225F, 0.615231633F,
    0.610382795F, 0.605511F, 0.600616515F, 0.59569931F, 0.590759695F,
    0.585797906F, 0.580814F, 0.575808227F, 0.570780754F, 0.565731823F,
    0.560661614F, 0.555570245F, 0.550458F, 0.545325041F, 0.540171504F,
    0.534997642F, 0.529803634F, 0.524589717F, 0.519356F, 0.514102757F,
    0.50883019F, 0.50353837F, 0.498227656F, 0.492898226F, 0.487550169F,
    0.482183754F, 0.47679925F, 0.471396744F, 0.465976506F, 0.460538715F,
    0.455083579F, 0.449611336F, 0.444122165F, 0.438616246F, 0.433093846F,
    0.427555084F, 0.422000289F, 0.416429579F, 0.410843194F, 0.40524134F,
    0.399624199F, 0.393992066F, 0.388345033F, 0.382683456F, 0.377007425F,
    0.371317208F, 0.365613F, 0.359895051F, 0.354163527F, 0.348418683F,
    0.342660725F, 0.336889863F, 0.331106305F, 0.32531032F, 0.319502026F,
    0.313681751F, 0.307849675F, 0.302005947F, 0.296150893F, 0.290284663F,
    0.284407556F, 0.27851969F, 0.272621363F, 0.266712785F, 0.260794133F,
    0.254865676F, 0.248927608F, 0.242980197F, 0.237023607F, 0.231058121F,
    0.225083917F, 0.219101235F, 0.213110328F, 0.207111388F, 0.201104641F,
    0.195090324F, 0.18906866F, 0.183039889F, 0.177004218F, 0.170961902F,
    0.164913133F, 0.15885815F, 0.152797192F, 0.146730468F, 0.140658244F,
    0.134580716F, 0.128498122F, 0.122410677F, 0.116318636F, 0.110222206F,
    0.10412164F, 0.0980171412F, 0.0919089541F, 0.0857973173F, 0.0796824396F,
    0.0735645667F, 0.0674439222F, 0.0613207407F, 0.0551952459F, 0.0490676761F,
    0.0429382585F, 0.0368072242F, 0.030674804F, 0.024541229F, 0.0184067301F,
    0.0122715384F, 0.00613588467F, 0.0F };

  bluesteinSetup(wwc);
  xidx = 0;
  for (k = 0; k < 400; k++) {
    y[k].re = wwc[k + 399].re * x[xidx];
    y[k].im = wwc[k + 399].im * -x[xidx];
    xidx++;
  }

  r2br_r2dit_trig_impl(y, costab, sintab, fv);
  r2br_r2dit_trig(wwc, costab, sintab, fcv1);
  for (xidx = 0; xidx < 1024; xidx++) {
    b_fv[xidx].re = fv[xidx].re * fcv1[xidx].re - fv[xidx].im * fcv1[xidx].im;
    b_fv[xidx].im = fv[xidx].re * fcv1[xidx].im + fv[xidx].im * fcv1[xidx].re;
  }

  b_r2br_r2dit_trig(b_fv, costab, sintabinv, fv);
  xidx = 0;
  for (k = 0; k < 400; k++) {
    y[xidx].re = wwc[k + 399].re * fv[k + 399].re + wwc[k + 399].im * fv[k + 399]
      .im;
    y[xidx].im = wwc[k + 399].re * fv[k + 399].im - wwc[k + 399].im * fv[k + 399]
      .re;
    xidx++;
  }
}

/*
 * File trailer for fft.c
 *
 * [EOF]
 */
